/**
 * 
 */
package com.desksoft.ecommerce.vo.logistics;

import com.desksoft.ecommerce.util.expr.Expression;
import com.desksoft.utility.query.QueryVO;

/***************************************
 * <pre>
 * 版权所有：杭州迪科软件 保留所有权利
 * 创建日期: Sep 1, 2011 3:01:17 PM
 * 创建作者：yejw
 * 文件名称：ExprPointVO.java
 * 版本：
 * 功能：
 * 最后修改时间：Sep 1, 2011 3:01:17 PM
 * 修改记录：
 * </pre>
 *****************************************/

public class ExprPointVO extends QueryVO {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6158027507517926247L;
	
	/**
	 * ID
	 */
	private String code;
	
	/**
	 * 扩展参数1
	 */
	private String param1;
	/**
	 * 扩展参数2
	 */
	private String param2;
	/**
	 * 扩展参数3
	 */
	private String param3;
	/**
	 * 扩展参数4
	 */
	private String param4;
	/**
	 * 条件组合
	 * usage:
	 * 1. 各待检验的条件之间使用 减号(-)分隔, eg: a-b-ab-ac
	 * 2. 如果条件带参数则以标准的JSON格式追加, eg: a{"param1":1, "param2":"test string"}-ad
	 * 3. 可使用   JSONUtil.toJSON(o) 转换一个对象为JSON字符串
	 */
	private String condition;
	
	/**
	 * 条件组合对象
	 */
	private Expression expr;

	public Expression getExpr() {
		return expr;
	}

	/**
	 * 设置条件组件对象
	 * 
	 * @param expr	条件组合对象
	 */
	public void setExpr(Expression expr) {
		this.expr = expr;
	}

	/**
	 * @return the code
	 */
	public String getCode() {
		return code;
	}

	/**
	 * @param code the code to set
	 */
	public void setCode(String code) {
		this.code = code;
	}

	/**
	 * @return the param1
	 */
	public String getParam1() {
		return param1;
	}

	/**
	 * @param param1 the param1 to set
	 */
	public void setParam1(String param1) {
		this.param1 = param1;
	}

	/**
	 * @return the param2
	 */
	public String getParam2() {
		return param2;
	}

	/**
	 * @param param2 the param2 to set
	 */
	public void setParam2(String param2) {
		this.param2 = param2;
	}

	/**
	 * @return the param3
	 */
	public String getParam3() {
		return param3;
	}

	/**
	 * @param param3 the param3 to set
	 */
	public void setParam3(String param3) {
		this.param3 = param3;
	}

	/**
	 * @return the condition
	 */
	public String getCondition() {
		if (this.expr != null) {
			return this.expr.get();
		}
		
		return condition;
	}

	/**
	 * @param condition the condition to set
	 * @deprecated 使用 {@link #setExpr(Expression)} 替代本方法
	 * @see com.desksoft.ecommerce.vo.logistics.ExprPointVO#setExpr(Expression)
	 */
	public void setCondition(String condition) {
		this.condition = condition;
	}

	/**
	 * @return the param4
	 */
	public String getParam4() {
		return param4;
	}

	/**
	 * @param param4 the param4 to set
	 */
	public void setParam4(String param4) {
		this.param4 = param4;
	}

}
